Помогите реализовать Long polling.
Суть в чем - мне надо отсылать запрос на сервер и ждать ответ 10 секунд, если ответа нет, то снова отсылать запрос и ждать 10 секунд ответа.
Сервер:
$mysqli = new mysqli('localhost', 'root', '', 'test');
if (mysqli_connect_errno()) {
printf("error: %s\n", mysqli_connect_error());
exit;
}
session_start();
$MY_ID = $_SESSION['id'];
while (true) {
$result = $mysqli - > query("SELECT COUNT(*) FROM messages WHERE user_get='$MY_ID' AND status='1' ");
if (mysqli_num_rows($result)) {
while ($row = mysqli_fetch_array($result)) {
echo $row[0].
"";
}
flush();
exit;
}
sleep(5);
}
Клиент:
$(document).ready(function getmess(){
$.ajax({
url:"notif.php",
data:{"id":id},
type:"POST",
timeout: 10000,
complete:getmess,
success:function(result){
$("#count").html(result);
}
});
});
Проблема в том, что запрос отсылается каждую секунду, что уже нарушает сам принцип long polling'а, и функция на изменения значения timeout вообще не реагирует.
Пробовал вот так
function getmess(){
$.ajax({
url:"notif.php",
data:{"id":id},
type:"GET",
success:function(result){
$("#count").html(result);
setTimeout('getmess',10000);
}
});
}
но тогда вообще отсылается 1 запрос длинной в секунду и все функция останавливается.